#!/usr/bin/env python3
# -*- coding: utf-8 -*-

"""
工具函数模块
"""

import logging
import os
from datetime import datetime


def setup_logger(name, log_file, level=logging.INFO):
    """设置日志记录器"""
    # 确保日志目录存在
    log_dir = os.path.dirname(log_file)
    if log_dir and not os.path.exists(log_dir):
        os.makedirs(log_dir)
    
    # 创建格式化器
    formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
    
    # 创建文件处理器，指定UTF-8编码
    handler = logging.FileHandler(log_file, encoding='utf-8')
    handler.setFormatter(formatter)
    
    # 创建日志记录器
    logger = logging.getLogger(name)
    logger.setLevel(level)
    logger.addHandler(handler)
    
    # 避免重复添加处理器
    logger.propagate = False
    
    return logger


def format_datetime(dt_str):
    """格式化日期时间字符串"""
    try:
        # 尝试解析不同的日期时间格式
        dt = datetime.fromisoformat(dt_str.replace('Z', '+00:00'))
        return dt.strftime('%Y-%m-%d %H:%M:%S')
    except ValueError:
        return dt_str


def truncate_text(text, max_length=100):
    """截断文本"""
    if len(text) > max_length:
        return text[:max_length] + "..."
    return text


def safe_get(dict_obj, key, default=""):
    """安全获取字典值"""
    try:
        return dict_obj.get(key, default)
    except:
        return default